iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
0
Modern Web

使用 Django 開發網頁系統系列 第 4

[Day 04] Route-urls.py

  • 分享至 

  • xImage
  •  

今天來聊聊 Route
在專案目錄下有個 urls.py
這個檔案是用來處理網頁請求(request)

伺服器一接到網頁請求會到 <proj>/urls.py 中做配對 再來到 哪個Controller(views) 做處理

假如要有多一頁 about 路徑,http://localhost:8000/about/
可以加上

path('about/', views.XX ),

官網範例
https://docs.djangoproject.com/en/2.0/topics/http/urls/#example
除了寫死的路徑,如果像[Day 03]提到的首頁,可以用 正則表示式(regular expression) 來設定
正則表示式真的好用,網路上有很多教學,可以學一下

可以加上,include 這裡是指包含main/urls.py

^ : 比對開頭位置
. : 比對任何字元
* : 前面一個字元可以 0~多 個
$ : 比對結尾位置

<proj>/urls.py

re_path(r'^.*', include('main.urls')),

main/urls.py

re_path(r'^$', views.main),

include() 的部分再講多一點
舉例如果路徑有
http://localhost:8000/main/about/
http://localhost:8000/main/demoPage/
可以這樣寫
<proj> /urls.py

re_path(r'^main/', include('main.urls')),

main/urls.py

re_path(r'^about/$', views.about),
re_path(r'^demoPage/$', views.demoPage),

還可以用在傳參數上
以往可能傳統方式要傳id ... 等等 參數,會使用問號的方式 http://localhost:8000/post/?id=1
這時候就可以用正則表示式
http://localhost:8000/post/1/

\d : 僅數字
+ : 前面一個字元需要 1~多 個

urls.py

re_path('post/(?P<id>\d+)/', views.post),

要在 views.py function 要加上參數
views.py

def post(reuest, id):
    return HttpResponse('Id is {}'.format(id))

提醒一下,以前遇到的問題(bug),找不到views、找錯views
配對的順序是由上往下的,一有符合就過去了,不會在往下
所以在前面的要比較嚴謹,或是正則表示式要寫嚴謹一點。

今天就寫到這邊了,還有一些參數可以設定,以後遇到再講好了...
Route name, namespace, 404 pages...

心得一下:
這次遇到djagno 2.0 改版 urls.py 部分改了一些寫法,例如 url => path, re_path


上一篇
[Day 03] Hello world
下一篇
[Day 05] Templates 範本
系列文
使用 Django 開發網頁系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言